package threadStudy;

import java.util.concurrent.*;

public class SingleThreadExecutor {
    public static void main(String[] args) {
        System.out.println("单个线程运行");
        // 单个线程
        SingleThreadExecutor singleThreadExecutor = new SingleThreadExecutor();

        System.out.println("可缓存的线程");
        // 无界线程池，具有自动回收多余线程池的功能
        // core线程最大值无限创建
        // 队列内部不存储，直接交付
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

        System.out.println("可延时的线程");
        // 定时周期性执行任务
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(10);
        // 延时5秒后执行任务
        scheduledThreadPool.schedule(new Task(), 5, TimeUnit.SECONDS);
        // 第一次延时一秒钟，以后每间隔三秒钟执行任务
        scheduledThreadPool.scheduleAtFixedRate(new Task(), 1, 3, TimeUnit.SECONDS);
        // jdk1.8以后 子任务和窃取
        ExecutorService workStealingPool = Executors.newWorkStealingPool();

        // 停止线程池
        // shutdown 初始化整个线程池关闭过程 仅仅新的任务不会增加了

    }
}
